
#import <Foundation/Foundation.h>

typedef enum{
    SDK_InitFinish = 0,      
    SDK_LoginSuccess,        
    SDK_LoginFail,           
    SDK_IdAuthSuccess,       
    SDK_IdAuthCancel,        
    SDK_PurchaseSuccess,     
    SDK_PurchaseFail,        
    SDK_PurchaseCancle,      
    SDK_PrivacyAgreed,       
    SDK_UpdateToken,         
    SDK_UserCenterSwitchAccount,  
    SDK_UserCenterChangPwd,  
} SDK_EventType;

@interface KDPPool : NSObject
@property(nonatomic, assign) SDK_EventType eventType; //回调事件类型
@property(nonatomic, strong) NSString *userId;
@property(nonatomic, strong) NSString *token;
@property(nonatomic, strong) NSString *message;
@property(nonatomic, assign) BOOL isNewUser;
@property(nonatomic, assign) BOOL isAgreePrivacy;
@end

@class KDPPool;

@protocol SDKDelegate <NSObject>

@optional
- (void)SDKCallBack:(KDPPool *)info;
@end

@interface KDPProgressNormal : NSObject

#pragma mark - init&configure

+ (instancetype)wIAP_ProductId;


- (void)initSDK:(id<SDKDelegate>)delegate;


#pragma mark - login

/**
 * 登录
 */
- (void)showCadPaAgeViewa;

/**
 * 退出登录
 */
- (void)lickShowAccUpgradeViewg;

/**
 * 切换账号
 */
- (void)egetSaveAntiFraudTime;

/**
 * 显示用户中心
 */
- (void)agetCheckOldpwdUrlWithOldPassword;

/**
 * 显示适龄图标
 */
- (void)rgetBingphoneSmsCodeAction;


/**
 * 隐藏适龄图标
 */
- (void)getCaptchasUrlu;

/**
 * SDK实名认证
 */
- (void)yconfirmQuit;

/**
 * 游戏内游客升级
 */
- (void)visProtocolUpdate;

#pragma mark - userInfo

/**
 * 获取当前实名认证状态
 * 0未填写身份证 1已成年 2未成年
 */
- (NSInteger)ygetRecomUserId;

/**
 * 获取当前实名认证状态
 * 0未实名(未提交实名信息);1已实名;2实名中;3实名失败
 */
- (NSInteger)thinkingInvatal;

/**
 * 获取当前用户是否游客
 */
- (BOOL)xxteaVisibleDrag;

#pragma mark - 参数获取
/**
 * 获取AppId
*/
- (NSString *)didGoto;

/**
 * 获取设备唯一标识
*/
- (NSString *)getCurrentViewShot5;

/**
 * 获取设备IP地址
*/
- (NSString *)getSupportVisitorUpgradei;

/**
 * 获取渠道号
*/
- (NSString *)allInvatal;

/**
 * 获取app版本号
*/
- (NSString *)reuseYunOf;

/**
 * 获取radid
*/
- (NSString *)validatAccountsDissm;

/**
 * 获取rsid
*/
- (NSString *)dragDecodeQuit;

/**
 * 获取配置扩展参数  jsonString格式
 * 在SDK后台配置扩展参数，由SDK获取后，游戏可在SDK初始化成功后从此接口获取
*/
- (NSString *)SDKEvent8;

#pragma mark - 广告归因（可选）


- (void)setRadidAndRsid:(NSString *)radid rsid:(NSString *)rsid;

#pragma mark - link

/**
 *  打开协议
 */
- (void)purchaseClickfindpw;

/**
 * 打开URL网页
 */
- (void)dicDismiss:(NSString *)url;

/**
 *  修改账号的密码
 */
- (void)dayPrivacy;

#pragma mark - 内购支付

/**
 *  内购支付
 *
 *  @param productId                       内购产品ID
 *  @param serverId                         服务区ID
 *  @param actorId                           角色ID
 *  @param userId                             用户ID
 *  @param money                               购买金额
 *  @param orderItem                       订单明细: 1*100*1*大礼包*ProductId  商品ID*单价（分）*数量*商品名称，总长度限制32个字节
 *  @param orderNO                           订单号
 *  @param currencyType                货币代码（CNY、USD）
 *  @param orderSign                       订单签名: MD5(OrderItem + OrderNO + PayNum + UserID + buyKey)
 *  @param developerPayload      新增，游戏可透传扩展参数
 */
- (void)vvalidateIDCardNumber:(NSString *)productId
                  serverId:(NSString *)serverId
                   actorId:(NSString *)actorId
                    userId:(NSString *)userId
                     money:(NSString *)money
                 orderItem:(NSString *)orderItem
                   orderNO:(NSString *)orderNO
              currencyType:(NSString *)currencyType
                 orderSign:(NSString *)orderSign
            developerPayload:(NSString *)developerPayload;

#pragma mark - trackEvent&基础上报事件

/**
 *  启动事件上报
 *  @brief 启动到用户登录之间的上报事件，这时还没有用户
 *  @param action   动作
 *  @param properties          扩展参数，格式: key1=value1;key2=value2
*/
- (void)zloadLoginViewData:(NSString *)action
           Properties:(NSString *)properties;

/**
 *  用户事件上报
 *  @brief 有用户角色信息的调用是事件，如：用户登录、创建角色，登录进入游戏，SDK账号验证成功等
 *  @param action        事件类型
 *  @param serverId    服务器id
 *  @param roleName   角色名称
 *  @param roleLevel 角色等级
 *  @param userId       用户名或userid(通过session从服务器取)
 *  @param msg              扩展参数，格式: key1=value1;key2=value2
*/
- (void)pjsonObjectWithString:(NSString *)action
                   serverId:(NSString *)serverId
                     userId:(NSString *)userId
                     roleId:(NSString *)roleId
                   roleName:(NSString *)roleName
                  roleLevel:(NSString *)roleLevel
                        msg:(NSString *)msg;

@end

